<html>
<head><meta charset="utf-8"><title>Roadmap and projects for incr-comp · t-compiler/wg-incr-comp · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/index.html">t-compiler/wg-incr-comp</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html">Roadmap and projects for incr-comp</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="225902556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/225902556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#225902556">(Feb 10 2021 at 20:29)</a>:</h4>
<p>Is there a list of projects to make progress on incremental compilation during the year?<br>
Some kind of roadmap for the wg?</p>



<a name="225904171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/225904171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#225904171">(Feb 10 2021 at 20:40)</a>:</h4>
<p>yes: <a href="https://github.com/rust-lang/wg-incr-comp/issues/1">https://github.com/rust-lang/wg-incr-comp/issues/1</a></p>



<a name="225904614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/225904614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#225904614">(Feb 10 2021 at 20:44)</a>:</h4>
<p>This was just something I threw together so if you have input about what you think we should be working on, please feel free to share!</p>



<a name="225908181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/225908181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#225908181">(Feb 10 2021 at 21:08)</a>:</h4>
<p>The long-shots I have in mind:<br>
1/ opportunistically drop the HIR;<br>
2/ splitting the query system into several stages;<br>
3/ incremental lowering, resolving and macro-expansion;<br>
4/ transition HIR from a tree to ECS-like data structures.</p>
<p>Those items will require a significant work before being proposable, and will probably take a few month just to reach a design.</p>



<a name="226191254"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191254" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191254">(Feb 12 2021 at 20:23)</a>:</h4>
<p><span class="user-mention silent" data-user-id="248906">cjgillot</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp/near/225908181">said</a>:</p>
<blockquote>
<p>The long-shots I have in mind:<br>
1/ opportunistically drop the HIR;<br>
2/ splitting the query system into several stages;<br>
3/ incremental lowering, resolving and macro-expansion;<br>
4/ transition HIR from a tree to ECS-like data structures.</p>
<p>Those items will require a significant work before being proposable, and will probably take a few month just to reach a design.</p>
</blockquote>
<p>wouldn't it be a good idea for the wg to start diving those big projects into actionable things and then maybe split the work?</p>



<a name="226191328"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191328" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191328">(Feb 12 2021 at 20:23)</a>:</h4>
<p>I am still in the brain-dump stage, not yet in the strategic planning <span aria-label="big smile" class="emoji emoji-1f604" role="img" title="big smile">:big_smile:</span></p>



<a name="226191418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191418">(Feb 12 2021 at 20:24)</a>:</h4>
<p>:)</p>



<a name="226191492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191492">(Feb 12 2021 at 20:25)</a>:</h4>
<p>I developed a bit more in the sprint hack-md, actually.<br>
<a href="https://hackmd.io/Br1k5qy0QWuPdbMZMdyeqQ?view">https://hackmd.io/Br1k5qy0QWuPdbMZMdyeqQ?view</a></p>



<a name="226191508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191508">(Feb 12 2021 at 20:25)</a>:</h4>
<p>cool</p>



<a name="226191634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226191634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226191634">(Feb 12 2021 at 20:26)</a>:</h4>
<p>yeah, I was kind of clapping and cheering for what you're doing and also asking if wouldn't make sense to try to work on more strategic things like the ones you're saying</p>



<a name="226193041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226193041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226193041">(Feb 12 2021 at 20:38)</a>:</h4>
<p>I would be happy to help with the design and implementation.</p>



<a name="226193323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226193323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Santiago Pastorino <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226193323">(Feb 12 2021 at 20:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="248906">cjgillot</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp/near/226193041">said</a>:</p>
<blockquote>
<p>I would be happy to help with the design and implementation.</p>
</blockquote>
<p>would be willing to help if you have ideas :)</p>



<a name="226320159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226320159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226320159">(Feb 14 2021 at 19:19)</a>:</h4>
<p>Started a design document here. Looking for comments <a href="https://hackmd.io/@cjgillot/BJlE9Jw-u">https://hackmd.io/@cjgillot/BJlE9Jw-u</a></p>



<a name="226512203"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226512203" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226512203">(Feb 16 2021 at 13:26)</a>:</h4>
<p>I don't know if it fits here but I'd love to see (clean up/simplification/documentation) of the query system implementation on the agenda <code>:)</code></p>



<a name="226547926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226547926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226547926">(Feb 16 2021 at 17:38)</a>:</h4>
<p>This is still an early draft with unsanctioned proposals <span aria-label="big smile" class="emoji emoji-1f604" role="img" title="big smile">:big_smile:</span> <br>
I added it as the first item.</p>



<a name="226681094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/226681094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mw <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#226681094">(Feb 17 2021 at 16:12)</a>:</h4>
<p><span class="user-mention" data-user-id="248906">@cjgillot</span> Sure, I'm mostly commenting from the sidelines here anyway <code>:)</code></p>



<a name="227330634"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/227330634" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> cjgillot <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#227330634">(Feb 22 2021 at 20:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="248906">cjgillot</span> <a href="#narrow/stream/241847-t-compiler.2Fwg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp/near/226320159">said</a>:</p>
<blockquote>
<p>Started a design document here. Looking for comments <a href="https://hackmd.io/@cjgillot/BJlE9Jw-u">https://hackmd.io/@cjgillot/BJlE9Jw-u</a></p>
</blockquote>
<p><span class="user-mention" data-user-id="123856">@Vadim Petrochenkov</span>, I would like your input on the above HackMD.<br>
You are the most familiar with AST, expand and resolve, and I fear I am speculating wildly on some parts.</p>



<a name="227336207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/227336207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#227336207">(Feb 22 2021 at 20:59)</a>:</h4>
<p>I have no idea honestly.<br>
I have some vague understanding of how the query system and incremental compilation works from the dev guide, but I never tried to connect it to resolve and expansion.<br>
Yes, things can likely be restructured to work in incremental-friendly way to some extent, but I can't say how exactly this should be done without human-months of experiments and design work.</p>



<a name="227338500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/227338500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#227338500">(Feb 22 2021 at 21:15)</a>:</h4>
<p>I might add that there are some plans for rust-analyzer to refactor how import resolution is performed to be easier to understand and model: <a href="https://github.com/rust-analyzer/rust-analyzer/issues/5922">https://github.com/rust-analyzer/rust-analyzer/issues/5922</a></p>
<p>It could also pave the way towards extracting "early" name resolution into a library.</p>



<a name="227338719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/227338719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#227338719">(Feb 22 2021 at 21:16)</a>:</h4>
<p>Also, rust-analyzer's crate-wide name resolution is a distinct query from name resolution inside of item bodies, which helps with incrementality. It does not solve the fundamental issue that it's a fixed-point algorithm that has to look at every single item-level macro invocation though.</p>



<a name="227338991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap%20and%20projects%20for%20incr-comp/near/227338991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/241847-t-compiler/wg-incr-comp/topic/Roadmap.20and.20projects.20for.20incr-comp.html#227338991">(Feb 22 2021 at 21:18)</a>:</h4>
<p>Maybe, once we have extracted the name resolution algorithm and made it use a simplified input instead of the full AST, that input could be stored in the incr. comp. cache, since it's probably quite small compared to all the macro expansions that go into nameres.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>